home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / share / hal / device-manager / Representation.py < prev    next >
Encoding:
Python Source  |  2007-05-11  |  4.3 KB  |  105 lines

  1. """This file contains the Representation class."""
  2.  
  3. import gtk
  4.  
  5. import Const
  6.  
  7. class Representation:
  8.     """This class maps a device to presentation texts and icons used in
  9.     the GUI"""
  10.  
  11.     def load_and_scale_icon(self, path):
  12.         """Helper function for loading an icon and scaling it to 16x16"""
  13.         orig = gtk.gdk.pixbuf_new_from_file(path)
  14.         icon = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 16, 16)
  15.         orig.scale(icon, 0, 0, 16, 16,
  16.                    0, 0,
  17.                    16.0/orig.get_width(),
  18.                    16.0/orig.get_height(),
  19.                    gtk.gdk.INTERP_HYPER)
  20.         return icon
  21.  
  22.     def __init__(self):
  23.         """Init the class and load neccessary resources."""
  24.         self.icons = {}
  25.         self.icons["computer"] = self.load_and_scale_icon(Const.DATADIR + "/hal-computer.png")
  26.         self.icons["bus_pci"] = self.load_and_scale_icon(Const.DATADIR + "/hal-bus-pci.png")
  27.         self.icons["bus_usb"] = self.load_and_scale_icon(Const.DATADIR + "/hal-bus-usb.png")
  28.         self.icons["abstract"] = self.load_and_scale_icon(Const.DATADIR + "/hal-abstract.png");
  29.         self.icons["harddisk"] = self.load_and_scale_icon(Const.DATADIR + "/hal-harddisk.png");
  30.         self.icons["cdrom"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cdrom.png");
  31.         self.icons["floppy"] = self.load_and_scale_icon(Const.DATADIR + "/hal-floppy.png");
  32.         self.icons["unknown"] = self.load_and_scale_icon(Const.DATADIR + "/hal-unknown.png")
  33.         self.icons["mouse"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-mouse.png")
  34.         self.icons["keyboard"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-keyboard.png")
  35.         self.icons["cardbus"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-cardbus.png")
  36.         self.icons["video"] = self.load_and_scale_icon(Const.DATADIR + "/hal-video.png")
  37.         self.icons["flash"] = self.load_and_scale_icon(Const.DATADIR + "/hal-flash.png")
  38.         self.icons["network"] = self.load_and_scale_icon(Const.DATADIR + "/hal-network.png")
  39.         self.icons["audio"] = self.load_and_scale_icon(Const.DATADIR + "/hal-audio.png")
  40.         self.icons["camera"] = self.load_and_scale_icon(Const.DATADIR + "/hal-camera.png")
  41.         self.icons["serial"] = self.load_and_scale_icon(Const.DATADIR + "/hal-serial-port.png")
  42.  
  43.  
  44.     def get_icon(self, device):
  45.         """Given a Device object return an icon to display"""
  46.  
  47.         # Default to abstract icon
  48.         icon = self.icons["abstract"]
  49.  
  50.         try:
  51.             product = device.properties["info.product"]
  52.         except KeyError:
  53.             product = "Unknown"
  54.         except TypeError:
  55.             return icon
  56.             
  57.         if product=="Computer":
  58.             return self.icons["computer"]
  59.  
  60.         # First look at bus type, every device got subsystem property
  61.         if device.properties.has_key("info.subsystem"):
  62.         bus = device.properties["info.subsystem"]
  63.         if bus=="usb_device":
  64.         icon = self.icons["bus_usb"]
  65.         elif bus=="pci":
  66.         icon = self.icons["bus_pci"]
  67.     else:
  68.         bus = "unknown"
  69.  
  70.         # Then look at Category, if available
  71.         if not device.properties.has_key("info.category"):
  72.             return icon
  73.         cat = device.properties["info.category"]
  74.         if cat=="input.mouse":
  75.             icon = self.icons["mouse"]
  76.         elif cat=="input.keyboard":
  77.             icon = self.icons["keyboard"]
  78.         elif cat=="pcmcia_socket":
  79.             icon = self.icons["cardbus"]
  80.         elif cat=="video4linux":
  81.             icon = self.icons["video"]
  82.         elif cat=="dvb":
  83.             icon = self.icons["video"]
  84.         elif cat=="camera":
  85.             icon = self.icons["camera"]
  86.         elif cat=="storage" or cat=="storage.removable":
  87.             if device.properties.has_key("storage.media"):
  88.                 media = device.properties["storage.media"]
  89.                 if media=="cdrom":
  90.                     icon = self.icons["cdrom"]
  91.                 elif media=="floppy":
  92.                     icon = self.icons["floppy"]
  93.                 elif media=="disk":
  94.                     icon = self.icons["harddisk"]
  95.                 elif media=="flash":
  96.                     icon = self.icons["flash"]
  97.         elif cat=="net":
  98.             icon = self.icons["network"]
  99.         elif cat=="multimedia.audio":
  100.             icon = self.icons["audio"]
  101.         elif cat=="serial":
  102.             icon = self.icons["serial"]
  103.  
  104.         return icon
  105.